package com.反射;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

/**
 * @Author CT
 * @Date 2021/6/14 11:30 下午
 */
public class 获取构造方法 {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
        //获取class对象
        Class<?> c = Class.forName("com.反射.Student");

        //获取公共构造方法数组
//        Constructor<?>[] cons = c.getConstructors();
//        for (Constructor con : cons) {
//            System.out.println(con);
//        }

        //获取所有的构造方法
//        Constructor<?>[] cons = c.getDeclaredConstructors();
//        for (Constructor con : cons) {
//            System.out.println(con);
//        }

        //获取无参构造方法
        Constructor<?> con = c.getConstructor();
        //创建对象
        Object obj = con.newInstance();
        System.out.println(obj);

        //获取私有带参构造方法
        Constructor<?> con1 = c.getDeclaredConstructor(String.class);
        //暴力反射
        con1.setAccessible(true);
        //创建对象
        Object obj1 = con1.newInstance("小白");
        System.out.println(obj1);


    }
}
